The evaluation order of both the #
and ##
preprocessor operators is unspecified. Compilers have been known to implement
these operators inconsistently, therefore, to avoid these problems, do not use them.
Noncompliant code example
#define A(Y) #Y /* Noncompliant */
#define A(X,Y) X##Y /* Noncompliant */